class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ret = 0;
        for(int i = 0; i < 32; ++i) // 依次修改ret的32个比特位->0改1
        {
            int sum = 0;
            for(auto e : nums)
            {
                // if(((e >> i) & 1) == 1)
                // {
                //     ++sum; // 依次统计所有数的第i位二进制位
                // }
                sum += ((e >> i) & 1); // 即上面注释掉的代码简化，不是加0就是加1
            }
            if(sum %= 3) // 说明这是只出现一次的数剩的1
            {
                ret |= (1 << i); // ret第i位改为1
            }
        }
        return ret;
    }
};